package com.teach.service;

import com.teach.entity.User;
import com.teach.dto.UserSearch;
import com.teach.dto.LoginUser;
import com.teach.dto.UserRegDTO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <pre>
 * TODO : 业务逻辑接口
 * 系统用户
 * ClassName : com.teach.service.UserService
 * Author : J.L.Zhou
 * Tel : 15111047708
 * E-Mail : 12020042@qq.com
 * Date : 2020-05-02 12:41
 * Version : 1.0
 * </pre>
 */
public interface UserService extends IService<User> {
	
	/**
	 * - 通用搜索条件
	 * @param user
	 * @return
	 */
	QueryWrapper<User> getQueryWrapper(User user);
	/**
	 * - 自定义用户搜索条件
	 * @param search
	 * @return
	 */
	QueryWrapper<User> getQueryWrapper(UserSearch search);
	
	/**
	 * - 登录
	 * @param userName
	 * @param userPwd
	 * @return
	 * @throws 用户不存在|密码错误|用户被锁定
	 */
	LoginUser login(String userName,String userPwd);
	
	/**
	 * - 判断用户名是否存在
	 * @param userName
	 * @return
	 */
	boolean existsUserName(String userName);
	
	/**
	 * 用户注册的特殊性
	 *  - 普通： 获取参数(对重要属性进行校验) -> 设置默认值 -> 调用Service的add -> 完成
	 *  1. 对重要属性进行校验
	 *  2. 字段的唯一性校验
	 *  3. 密码的（加盐）加密
	 *  4. 设置默认值 
	 * @param user 用户注册的数据传输对象
	 * @return 注册好的用户实体
	 * @throws RuntimeException:各种错误原因
	 */
	User reg(UserRegDTO user);
	
	

}
